文档

银行卡核验

更新时间:

本文介绍银行卡要素(银行卡二要素、银行卡三要素和银行卡四要素)API接口。

接口信息

  • 接口名称:BankMetaVerify。

  • 服务地址:cloudauth.aliyuncs.com(IPv4)或cloudauth-dualstack.aliyuncs.com(IPv6)。

  • 请求方法:POST和GET。

  • 传输协议:HTTPS。

  • 接口说明:银行卡核验, 包含:银行卡二要素(姓名+银行卡号),银行卡三要素(姓名+身份证号码+银行卡号)四要素(姓名+身份证号码+手机号+银行卡号)的一致性核验。

请求参数

名称

类型

是否必选

描述

示例值

ParamType

String

参数类型:

  • normal:不加密。

  • md5:MD5加密。

说明

请在如下入参字段中详细阅读MD5加密规则。

normal

VerifyMode

Strng

VERIFY_BANK_CARD:银行卡认证模式。表示将传入的银行卡号和用户的真实姓名、身份证号、手机号是否匹配。

VERIFY_BANK_CARD

ProductType

String

调用产品类型:

  • BANK_CARD_2_META:银⾏卡号+姓名核验。

  • BANK_CARD_3_META:银⾏卡号+姓名+身份证号核验。

  • BANK_CARD_4_META:银⾏卡号+姓名+身份证号+⼿机号核验。

BANK_CARD_4_META

BankCard

String

银行卡号。

  • 当paramType取值normal时,输入银行卡号明文。

  • 当paramType取值md5时,卡号除最后6位其他部分明文+最后6位md5值(32位小写)。

12345678****

UserName

String

姓名。

  • 当paramType取值normal时,输入姓名明文。

  • 当paramType取值md5时,姓名第一个字MD5加密(32位小写MD5)+ 姓名其他部分明文。

张三

IdentifyNum

String

身份证号。

  • 当ProductType取值BANK_CARD_3_META时,此项必选。

  • 当paramType取值normal时,输入身份证号明文。

  • 当paramType取值md5时,身份证号前6位明文+出生年月日md5加密(32位小写MD5)+身份证号后4位。

33010312345678****

Mobile

String

手机号。

  • 当ProductType取值BANK_CARD_4_META时,此项必选。

  • 当paramType取值normal时,输入手机号明文。

  • 当paramType取值md5时,输入手机号(32位小写MD5)。

1304567****

响应参数

名称

类型

描述

示例值

RequestId

String

请求ID。

130A2C10-B9EE-4D84-88E3-5384FF039795

Message

String

返回信息。

success

Code

String

返回码。

200为成功,其他为失败。

200

ResultObject

Object

BizCode

String

核验结果。

  • 1:校验⼀致(计费)

  • 2:校验不⼀致(计费)

  • 3:查⽆记录(不计费)

1

SubCode

String

核验详情。

  • 101:验证通过。

  • 201:认证信息不一致,持卡人信息有误。

  • 202:认证信息不一致,银行卡未开通认证支付。

  • 203:认证信息不一致,银行卡已过期。

  • 204:认证信息不一致,银行卡为受限制的卡。

  • 205:认证信息不一致,此卡被没收。

  • 206:认证信息不一致,银行卡无效。

  • 207:认证信息不一致,此卡无对应发卡行。

  • 208:认证信息不一致,该卡未初始化或睡眠卡。

  • 209:认证信息不一致,此卡为作弊卡、吞卡。

  • 210:认证信息不一致,此卡已挂失。

  • 211:认证信息不一致,密码错误次数超限。

  • 212:认证信息不一致,发卡行不支持此交易。

  • 213:认证信息不一致,卡状态不正常或卡无效。

  • 214:认证信息不一致,未预留手机号。

  • 215:认证信息不一致,输入的密码、有效期或CVN2有误。

  • 216:认证信息不一致,其他卡异常情况。

  • 301:无法验证,银行卡不支持该业务。

  • 302:无法验证,验证失败或银行拒绝验证,请联系发卡行。

  • 303:无法验证,银行卡暂不支持手机号验证。

  • 304:无法验证,银行卡号有误。

  • 305:无法验证,其他原因。

  • 306:无法验证,验证次数超限。

101

返回码

Code

Message

描述

200

success

成功。

400

参数不能为空

参数不能为空。

403

异常重复调⽤

异常重复调用次数超限。

401

参数非法

非法参数。

402

权威源服务异常

权威源服务异常。

410

未开通服务

产品未开通。

411

RAM无权限

需要给RAM用户授予AliyunYundunCloudAuthFullAccess的操作权限。

412

欠费中

产品欠费,请充值后操作。

500

系统错误

系统内部错误。

SDK调用示例

以下为您介绍不同语言SDK的调用示例。

Java

使用Maven引入SDK:

<dependency>
 <groupId>com.aliyun</groupId>
 <artifactId>cloudauth20190307</artifactId>
 <version>2.5.0</version>
</dependency>

示例:

import com.aliyun.cloudauth20190307.Client;
import com.aliyun.cloudauth20190307.models.BankMetaVerifyRequest;
import com.aliyun.cloudauth20190307.models.BankMetaVerifyResponse;
import com.aliyun.teaopenapi.models.Config;
import com.aliyun.teautil.models.RuntimeOptions;

import java.util.Arrays;
import java.util.List;

public class BankMetaVerify {
    public static void main(String[] args) throws Exception {

        // 通过以下代码创建API请求并设置参数。
        BankMetaVerifyRequest request = new BankMetaVerifyRequest();

        request.setParamType("normal");
        request.setProductType("BANK_CARD_4_META");
        request.setVerifyMode("VERIFY_BANK_CARD");
        request.setUserName("张**");
        request.setIdentifyNum("411***************");
        request.setBankCard("621****************");
        request.setMobile("131********");
        

        // 推荐,支持服务路由。
        BankMetaVerifyResponse response = bankMetaVerifyAutoRoute(request);

        // 不支持服务自动路由。
        //BankMetaVerifyResponse response = bankMetaVerify("cloudauth.cn-shanghai.aliyuncs.com", request);

        System.out.println(response.getBody().getRequestId());
        System.out.println(response.getBody().getCode());
        System.out.println(response.getBody().getMessage());
        System.out.println(response.getBody().getResultObject() == null ? null
                : response.getBody().getResultObject().getBizCode());
        System.out.println(response.getBody().getResultObject() == null ? null
                : response.getBody().getResultObject().getSubCode());
    }

    private static BankMetaVerifyResponse bankMetaVerifyAutoRoute(BankMetaVerifyRequest request) {
        // 第一个为主区域Endpoint,第二个为备区域Endpoint。
        List<String> endpoints = Arrays.asList("cloudauth.cn-shanghai.aliyuncs.com", "cloudauth.cn-beijing.aliyuncs.com");
        BankMetaVerifyResponse lastResponse = null;
        for (int i=0; i<endpoints.size(); i++) {
            try {
                BankMetaVerifyResponse response = bankMetaVerify(endpoints.get(i), request);
                lastResponse = response;

                // 服务端错误,切换到下个区域调用。
                if(response != null){
                    if(500 == response.getStatusCode()){
                        continue;
                    }
                    if(response.getBody() != null){
                        if("500".equals(response.getBody().getCode())){
                            continue;
                        }
                    }
                }

                return response;
            } catch (Exception e) {
                e.printStackTrace();
                if(i == endpoints.size()-1){
                    throw new RuntimeException(e);
                }
            }
        }

        return lastResponse;
    }

    private static BankMetaVerifyResponse bankMetaVerify(String endpoint, BankMetaVerifyRequest request)
            throws Exception {
        // 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。
        // 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。
        // 本示例通过阿里云Credentials工具从环境变量中读取AccessKey,来实现API访问的身份验证。如何配置环境变量,请参见https://help.aliyun.com/document_detail/378657.html。
        com.aliyun.credentials.Client credentialClient = new com.aliyun.credentials.Client();
        Config config = new Config();
        config.setCredential(credentialClient);
        config.setEndpoint(endpoint);
        // 设置http代理。
        //config.setHttpProxy("http://xx.xx.xx.xx:xxxx");
        // 设置https代理。
        //config.setHttpsProxy("http://xx.xx.xx.xx:xxxx");
        Client client = new Client(config);

        // 创建RuntimeObject实例并设置运行参数。
        RuntimeOptions runtime = new RuntimeOptions();
        runtime.readTimeout = 5000;
        runtime.connectTimeout = 5000;

        return client.bankMetaVerifyWithOptions(request, runtime);
    }
}
说明

Credentials工具配置方法,请参见管理访问凭据

PHP

关于PHP SDK源代码,请参见PHP SDK包

  • 通过Composer来管理项目依赖(推荐)

    composer require alibabacloud/cloudauth-20190307 2.5.0
  • 使用composer.json文件

    {
       "require": {
           "alibabacloud/cloudauth-20190307": "2.5.0"
        }
    }

示例:

<?php


namespace AlibabaCloud\SDK\Sample\Verify\Id;

use AlibabaCloud\Credentials\Credential; 
use AlibabaCloud\SDK\Cloudauth\V20190307\Cloudauth;
use AlibabaCloud\SDK\Cloudauth\V20190307\Models\BankMetaVerifyRequest;
use AlibabaCloud\SDK\Cloudauth\V20190307\Models\BankMetaVerifyResponse;
use Darabonba\OpenApi\Models\Config;
use AlibabaCloud\Tea\Utils\Utils;
use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
use Exception;

class BankMetaVerify
{
    /**
     * createClient
     * @param string $endpoint
     * @return Cloudauth
     */
    public static function createClient(string $endpoint): Cloudauth
    {
        // 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。
        // 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。
        // 本示例通过阿里云Credentials工具从环境变量中读取AccessKey,来实现API访问的身份验证。如何配置环境变量,请参见 https://help.aliyun.com/document_detail/311677.html。 
        $credential = new Credential([]);
        $config = new Config([
			  // 使用credential配置凭证
    		    "credential" => $credential,
            // 设置HTTP代理。
            // "httpProxy" => "<http://xx.xx.xx.xx:xxxx>",
            // 设置HTTPS代理
            // "httpsProxy" => "<https://xx.xx.xx.xx:xxxx>",
            "endpoint" => $endpoint

        ]);
        return new Cloudauth($config);
    }

    /**
     * @return void
     */
    public static function main(){
        $request = new BankMetaVerifyRequest([
            "paramType" => "normal",
            "productType" => "BANK_CARD_4_META",
            "verifyMode" => "VERIFY_BANK_CARD",
            "userName" => "张*",
            "identifyNum" => "411***************",
            "bankCard" => "621*****************",
            "mobile" => "131********",
            
        ]);
        // 推荐,支持服务路由。
        $response = self::bankMetaVerifyyAutoRoute($request);
        // 不支持服务自动路由。
        // $response = self::bankMetaVerify("cloudauth.cn-shanghai.aliyuncs.com", $request);
        var_dump($response->body->requestId);
        var_dump($response->body->code);
        var_dump($response->body->message);
        var_dump($response->body->resultObject->bizCode);
        var_dump($response->body->resultObject->subCode);
    }

    /**
     * bankMetaVerifyAutoRoute
     * @param BankMetaVerifyRequest $request
     * @return BankMetaVerifyResponse|null
     */
    public static function bankMetaVerifyAutoRoute(BankMetaVerifyRequest $request): ?BankMetaVerifyResponse
    {
        $endpoints = [
            "cloudauth.cn-shanghai.aliyuncs.com",
            "cloudauth.cn-beijing.aliyuncs.com"
        ];
        foreach($endpoints as $endpoint){
            try {
                $response = self::bankMetaVerify($endpoint, $request);
                if (Utils::equalNumber(500, $response->statusCode)) {
                    continue;
                }
                if(Utils::equalString("500", $response->body->code)){
                    continue;
                }
                return $response;
            }
            catch (Exception $err) {
                var_dump($err -> getCode());
                var_dump($err -> getMessage());
            }
        }
        return null;
    }

    /**
     * bankMetaVerify
     * @param string $endpoint
     * @param BankMetaVerifyRequest $request
     * @return BankMetaVerifyResponse
     */
    public static function bankMetaVerify(string $endpoint, BankMetaVerifyRequest $request): BankMetaVerifyResponse
    {
        $client = self::createClient($endpoint);
        // 创建RuntimeObject实例并设置运行参数。
        $runtime = new RuntimeOptions([]);
        $runtime->readTimeout = 5000;
        $runtime->connectTimeout = 5000;
        return $client->bankMetaVerifyWithOptions($request, $runtime);
    }
}

$path = __DIR__ . \DIRECTORY_SEPARATOR . \DIRECTORY_SEPARATOR . 'vendor' . \DIRECTORY_SEPARATOR . 'autoload.php';
if (file_exists($path)) {
    require_once $path;
}
BankMetaVerify::main();
说明

Credentials工具配置方法,请参见管理访问凭据

Python

关于Python SDK源代码,请参见Python SDK包

引入依赖并安装SDK:

pip install alibabacloud_tea_openapi==0.2.5
pip install alibabacloud_credentials==0.3.2
pip install alibabacloud_cloudauth20190307==2.5.0
说明

Credentials工具配置方法,请参见管理访问凭据

示例:

from alibabacloud_cloudauth20190307.client import Client as CloudauthClient
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_cloudauth20190307 import models as cloudauth_models
from alibabacloud_tea_util.client import Client as UtilClient
from alibabacloud_tea_util import models as util_models
from alibabacloud_credentials.client import Client as CredClient


class BankMetaVerify:
    def __init__(self):
        pass

    @staticmethod
    def create_client(
            endpoint: str,
    ) -> CloudauthClient:
        # 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。
        # 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。
        # 本示例通过阿里云Credentials工具从环境变量中读取AccessKey,来实现API访问的身份验证。如何配置环境变量,请参见 https://help.aliyun.com/zh/sdk/developer-reference/configure-credentials。
        cred=CredClient()
        config = open_api_models.Config(
        credential=cred,
        # 设置HTTP代理。
        # http_proxy='http://xx.xx.xx.xx:xxxx',
        # 设置HTTPS代理。
        # https_proxy='https://username:password@xxx.xxx.xxx.xxx:9999',
        endpoint=endpoint
        )
        return CloudauthClient(config)

    @staticmethod
    def main() -> None:
        request = cloudauth_models.BankMetaVerifyRequest(
           
            param_type='normal',
            verify_mode = "VERIFY_BANK_CARD",
            product_type = "BANK_CARD_4_META",
            user_name='张x',
            identify_num='411***************',
            bank_card = "621*****************",
            mobile = "131********"
        )
        response = BankMetaVerify.bank_meta_verify_auto_route(request)
        # 不支持服务自动路由。
        # response = BankMetaVerify.bank_meta_verify('cloudauth.cn-shanghai.aliyuncs.com', request)
        print(response.body.request_id)
        print(response.body.code)
        print(response.body.message)
        print(response.body.result_object.biz_code)
        print(response.body.result_object.sub_code)

    @staticmethod
    def bank_meta_verify_auto_route(
            request: cloudauth_models.BankMetaVerifyRequest,
    ) -> cloudauth_models.BankMetaVerifyResponse:
        endpoints = [
            'cloudauth.cn-shanghai.aliyuncs.com',
            'cloudauth.cn-beijing.aliyuncs.com'
        ]
        for endpoint in endpoints:
            try:
                response = BankMetaVerify.bank_meta_verify(endpoint, request)
                if UtilClient.equal_number(500, response.status_code):
                    continue
                if response is not None and response.body is not None:
                    if UtilClient.equal_string("500", response.body.code):
                        continue
                return response
            except Exception as err:
                print(err)
                continue
        return None

    @staticmethod
    def bank_meta_verify(
            endpoint: str,
            request: cloudauth_models.BankMetaVerifyRequest,
    ) -> cloudauth_models.BankMetaVerifyResponse:
        client = BankMetaVerify.create_client(endpoint)
        # 创建RuntimeObject实例并设置运行参数。
        runtime = util_models.RuntimeOptions()
        runtime.read_timeout = 5000
        runtime.connect_timeout = 5000
        return client.bank_meta_verify_with_options(request, runtime)


if __name__ == '__main__':
    BankMetaVerify.main()
            

Go

引入Credentials工具并安装SDK:

go get -u github.com/aliyun/credentials-go
go get github.com/alibabacloud-go/cloudauth-20190307/v3
说明

Credentials工具配置方法,请参见管理访问凭据

示例:

package main

import (
	"fmt"
	cloudauth "github.com/alibabacloud-go/cloudauth-20190307/v3/client"
	openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
	util "github.com/alibabacloud-go/tea-utils/v2/service"
	"github.com/alibabacloud-go/tea/tea"
    "github.com/aliyun/credentials-go/credentials"
)


func CreateClient (endpoint *string) (_result *cloudauth.Client, _err error) {
  //阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。
  //强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。
  //本示例通过阿里云Credentials工具从环境变量中读取AccessKey,来实现API访问的身份验证。
   // 初始化Credential。
	credential, _err := credentials.NewCredential(nil)
	if _err != nil {
		panic(_err)
	}
	// 初始化Client。
	config := &openapi.Config{
	// 使用Credential配置凭证。
	Credential: credential,
	Endpoint:   endpoint,
	// 设置HTTP代理。
	// HttpProxy: tea.String("http://xx.xx.xx.xx:xxxx"),
	// 设置HTTPS代理。
	// HttpsProxy: tea.String("https://username:password@xxx.xxx.xxx.xxx:9999"),
	}
	//_result = &cloudauth.Client{}
	_result, _err = cloudauth.NewClient(config)
	return _result, _err
}

func _main () (_err error) {
	request := &cloudauth.BankMetaVerifyRequest{
		ParamType: tea.String("normal"),
		UserName: tea.String("张*"),
		IdentifyNum: tea.String("411***************"),
        VerifyMode: tea.String("VERIFY_BANK_CARD"),
        ProductType: tea.String("BANK_CARD_4_META"),
        BankCard: tea.String("621*****************"),
        Mobile: tea.String("131********")
	}
	response, _err := BankMetaVerifyAutoRoute(request)
	// 不支持服务自动路由。
	// response, _err := BankMetaVerify(tea.String("cloudauth.cn-shanghai.aliyuncs.com"), request)
	if _err != nil {
		return _err
	}

	fmt.Println(*response.Body.RequestId)
	fmt.Println(*response.Body.Code)
	fmt.Println(*response.Body.Message)
	fmt.Println(*response.Body.ResultObject.BizCode)
    fmt.Println(*response.Body.ResultObject.SubCode)
	return _err
}

func BankMetaVerifyAutoRoute (request *cloudauth.BankMetaVerifyRequest) (_result *cloudauth.BankMetaVerifyResponse, _err error) {
	endpoints := []*string{tea.String("cloudauth.cn-shanghai.aliyuncs.com"), tea.String("cloudauth.cn-beijing.aliyuncs.com")}
	var lastResponse *cloudauth.BankMetaVerifyResponse
	for _, endpoint := range endpoints {
		response, _err := BankMetaVerify(endpoint, request)
		lastResponse = response
		if _err != nil {
			var err = &tea.SDKError{}
			if _t, ok := _err.(*tea.SDKError); ok {
				err = _t
				// 系统异常,切换到下个地域调用。
				if *err.StatusCode == 500 {
					continue
				}
			}
			return _result, _err
		}

		if *response.StatusCode == 500 {
			continue
		}

		if *response.Body.Code == "500"{
			continue
		}

		_result = response
		return _result, _err

	}
	_result = lastResponse
	return _result, _err
}

func BankMetaVerify (endpoint *string, request *cloudauth.BankMetaVerifyRequest) (_result *cloudauth.BankMetaVerifyResponse, _err error) {
	client, _err := CreateClient(endpoint)
	if _err != nil {
		return _result, _err
	}

	// 创建RuntimeObject实例并设置运行参数。
	runtime := &util.RuntimeOptions{}
	runtime.ReadTimeout = tea.Int(5000)
	runtime.ConnectTimeout = tea.Int(5000)
	_result = &cloudauth.BankMetaVerifyResponse{}
	_body, _err := client.BankMetaVerifyWithOptions(request, runtime)
	if _err != nil {
		return _result, _err
	}
	_result = _body
	return _result, _err
}


func main() {
	err := _main()
	if err != nil {
		panic(err)
	}
}

.NET

引入依赖并安装SDK:

  • 方式一:通过.NET命令行安装。

    dotnet add package AlibabaCloud.SDK.Cloudauth20190307 --version 2.5.0
    dotnet add package Aliyun.Credentials
  • 方式二:使用包管理安装。

    Install-Package AlibabaCloud.SDK.Cloudauth20190307 -Version 2.5.0
    Install-Package Aliyun.Credentials
说明

Credentials工具配置方法,请参见管理访问凭证

示例:

using System;

using System.Collections.Generic;
using Tea;


namespace BankMetaVerify
{
    public class Program
    {

        public static AlibabaCloud.SDK.Cloudauth20190307.Client CreateClient(string endpoint)
        {
            AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config
            {
               Credential=new Aliyun.Credentials.Client(null)
            };
  					config.Endpoint = endpoint;
            return new AlibabaCloud.SDK.Cloudauth20190307.Client(config);
        }

        public static void Main(string[] args)
        {
            AlibabaCloud.SDK.Cloudauth20190307.Models.BankMetaVerifyRequest request = new AlibabaCloud.SDK.Cloudauth20190307.Models.BankMetaVerifyRequest
            {
                ParamType = "normal",
                VerifyMode = "VERIFY_BANK_CARD",
                ProductType = "BANK_CARD_4_META",
                UserName = "张*",
                IdentifyNum = "411***************", 
                BankCard = "621*****************",
                Mobile = "131********"
            };
            AlibabaCloud.SDK.Cloudauth20190307.Models.BankMetaVerifyResponse response = BankMetaVerifyAutoRoute(request);
            // 不支持服务自动路由。
            //AlibabaCloud.SDK.Cloudauth20190307.Models.BankMetaVerifyResponse response = BankMetaVerify("cloudauth.cn-shanghai.aliyuncs.com", request);
            Console.WriteLine(response.Body.RequestId);
            Console.WriteLine(response.Body.Code);
            Console.WriteLine(response.Body.Message);
            Console.WriteLine(response.Body.ResultObject.BizCode);
            Console.WriteLine(response.Body.ResultObject.SubCode);
        }


        public static AlibabaCloud.SDK.Cloudauth20190307.Models.BankMetaVerifyResponse BankMetaVerifyAutoRoute(AlibabaCloud.SDK.Cloudauth20190307.Models.BankMetaVerifyRequest request)
        {
            List<string> endpoints = new List<string>
            {
                "cloudauth.cn-shanghai.aliyuncs.com",
                "cloudauth.cn-beijing.aliyuncs.com"
            };
            AlibabaCloud.SDK.Cloudauth20190307.Models.BankMetaVerifyResponse lastResponse = null;

            foreach (var endpoint in endpoints)
            {
                try
                {
                    AlibabaCloud.SDK.Cloudauth20190307.Models.BankMetaVerifyResponse response = BankMetaVerify(endpoint, request);
                    lastResponse = response;
                    if (response is not null)
                    {
                        if (AlibabaCloud.TeaUtil.Common.EqualNumber(500, (int)(response.StatusCode)))
                        {
                            continue;
                        }

                        if (response.Body is not null)
                        {
                            if (AlibabaCloud.TeaUtil.Common.EqualString("500", response.Body.Code))
                            {
                                continue;
                            }
                        }
                    }
                    return response;
                }
                catch (TeaException err)
                {
                    Console.WriteLine(err);
                    // 网络异常,切换到下个区域调用。
                    if (AlibabaCloud.TeaUtil.Common.EqualString("ServiceUnavailable", err.Code))
                    {
                        continue;
                    }
                }
                catch (Exception _err)
                {
                    Console.WriteLine(_err);
                    continue;
                }
            }
            return lastResponse;
        }

        public static AlibabaCloud.SDK.Cloudauth20190307.Models.BankMetaVerifyResponse BankMetaVerify(string endpoint, AlibabaCloud.SDK.Cloudauth20190307.Models.BankMetaVerifyRequest request)
        {
            AlibabaCloud.SDK.Cloudauth20190307.Client client = CreateClient(endpoint);
            // 创建RuntimeObject实例并设置运行参数。
            AlibabaCloud.TeaUtil.Models.RuntimeOptions runtime = new AlibabaCloud.TeaUtil.Models.RuntimeOptions();
            runtime.ReadTimeout = 5000;
            runtime.ConnectTimeout = 5000;
            return client.BankMetaVerifyWithOptions(request, runtime);
        }
    }
}

Node.js

引入依赖并安装SDK:

npm install @alicloud/tea-util
npm install @alicloud/openapi-client
npm install @alicloud/cloudauth20190307@2.4.0
npm install @alicloud/credentials
说明

Credentials工具配置方法,请参见管理访问凭证

示例:

const Config = require("@alicloud/openapi-client");
const CloudAuth = require("@alicloud/cloudauth20190307");
const CloudAuthClient = CloudAuth.default;
const {RuntimeOptions} = require("@alicloud/tea-util");
const { default: Credential } = require('@alicloud/credentials');

function createClient(endpoint) {
    // 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。
    // 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。
    // 本示例通过阿里云Credentials工具从环境变量中读取AccessKey,来实现API访问的身份验证。
    const cred = new Credential();
    const config = new Config.Config({
    credential: cred,
    // 设置Endpoint。
    endpoint: endpoint,
    // 设置HTTP代理。
    // httpProxy: "http://xxx.xxx.xxx.xxx:9999",
    // 设置HTTPS代理。
    // httpsProxy: "https://username:password@xxx.xxx.xxx.xxx:9999",
  });
  return new CloudAuthClient(config);
}

async function bankMetaVerify(endpoint, request) {
    const client = createClient(endpoint);
    // 创建RuntimeObject实例并设置运行参数。
    const runtime = new RuntimeOptions([]);
    runtime.readTimeout=5000;
    runtime.connectTimeout=5000;
    return await client.bankMetaVerifyWithOptions(request, runtime);
}

async function bankMetaVerifyAutoRoute(request) {
    const endpoints = [
        "cloudauth.cn-shanghai.aliyuncs.com",
        "cloudauth.cn-beijing.aliyuncs.com"
    ];

    for (const endpoint of endpoints) {
        try {
            const response = await bankMetaVerify(endpoint, request);
            if (response.statusCode === 500) {
                continue;
            }
            if(response.body !== null){
                if(response.body.code === "500"){
                    continue;
                }
            }
            return response;
        } catch (err) {
            console.log(err);
            continue;
        }
    }
    return null;
}

async function main(){
    // 通过以下代码创建API请求并设置参数。
    const request = new CloudAuth.BankMetaVerifyRequest({
        // 固定值。
        paramType: "normal",
        verifyMode: "VERIFY_BANK_CARD",
        productType: "BANK_CARD_4_META",
        identifyNum: "411***************",
        userName: "张*",
        bankCard: "621*****************",
        mobile: "131********",
    });

    // 推荐,支持服务路由。
    const response = await bankMetaVerifyAutoRoute(request);
    // 不支持服务自动路由。
    // const response = await bankMetaVerify("cloudauth.cn-shanghai.aliyuncs.com", request);
   if (response){
    console.log(response.body.requestId);
    console.log(response.body.code);
    console.log(response.body.message);
    console.log(response.body.resultObject.bizCode);
    console.log(response.body.resultObject.subCode);
    }
}

main().then(function (response) {});
  • 本页导读